There has been a growing interest in peer-to-peer, or end host-based, multicast for streaming data. Streaming refers to network communications that allow users to utilize the data in real time as it is being downloaded as opposed to storing the data in a local memory first before the user can utilize the data. Streaming is especially prevalent with the use of audio and video files, which generally tend to be large in number of bytes. With streaming, the file is broken down into multiple frames or substreams, and the file is played in real time as the substreams are downloaded onto the user's computer. As a result, streaming avoids the delay entailed in downloading an entire file before the user can use the file.
A peer-to-peer network is a popular environment for streaming data. A peer-to-peer network is one in which peer machines are networked together and maintain the state of the network via records on the participant machines. In peer-to-peer networks, any end host can initiate communications. Peer-to-peer networks are also sometimes referred to as “endhost” networks. Typical peer-to-peer networks lack a central server for administration, although hybrid networks do exist. Thus, generally speaking, the term peer-to-peer refers to a set of technologies that allows a group of computers to directly exchange data and/or services. The distinction between peer-to-peer networks and other network technologies is more about how the member computers communicate with one another than about the network structure itself. For example, end hosts in a peer-to-peer network act as both clients and servers in that the both consumer data and serve data to their peers.
A key challenge in a peer-to-peer network is robustness. Unlike routers in Internet Protocol (“IP”) multicast or dedicated servers, peers or end hosts are inherently unreliable due to crashes, disconnections, or shifts in user focus. A common way to achieve robustness is through redundancy, both in network paths and in data.
A second key challenge in a peer-to-peer network is accommodating bandwidth heterogeneity. Heterogeneity in bandwidth can be both static (e.g., due to differences in link speed) and dynamic (e.g., due to congestion). A popular approach to supporting bandwidth heterogeneity is to offer multiple streams, each optimized for a specific bandwidth level. Clients then tune in to the stream that best matches their bandwidth. The problem with this approach is that it tends to waste bandwidth on links shared by streams of different rates. Moreover, it is disruptive when clients must switch between streams of different bandwidth when responding to congestion.
Another approach to address bandwidth heterogeneity is Receiver-driven Layered Multicast (“RLM”). RLM approaches the heterogeneity and congestion control problems by combining a layered source coding algorithm with a layered transmission system that uses a separate IP multicast group for transmitting each layer of the stream. The receivers of RLM would drop layers upon congestion and add layers to probe for additional bandwidth. However, a significant drawback of RLM is that there is a fundamental mismatch between the ordering of layers based on the importance of, and the lack of widespread support for differentiated treatment of, packets in the Internet. Moreover, RLM cannot be readily applied to a peer-to-peer multicast because of several differences as compared to IP multicast (e.g., interior nodes being a dynamic set of end hosts rather than a set of dedicated routers). Thus, there is a need for an improved method and system for streaming data between multiple computers over a network.